

package cn.lcc.utils.core.config;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 服务配置
 *
 * @author 21341
 */
@Component
@ConfigurationProperties(prefix = "netty-config")
@Setter
@Getter
public class NettyConfig {
    /**
     * 使用框架
     * mina | netty
     */
    private String use;

    /**
     * 使用协议
     * tcp | udp
     */
    private String protocol;

    /**
     * 服务端口
     */
    private Integer port;

    /**
     * 是否需要鉴权
     */
    private Boolean auth;

    /**
     * 鉴权消息ID
     */
//    private String authMsgId;

    /**
     * 处理器数量
     */
    private Integer processCount;

    /**
     * 核心线程池大小
     */
    private Integer corePoolSize;

    /**
     * 最大线程池大小
     */
    private Integer maximumPoolSize;

    /**
     * 线程池保持活跃时间
     */
    private Integer keepAliveTime;

    /**
     * 空闲时间
     */
    private Integer idleTime;

    /**
     * 空闲数量
     */
    private Integer idleCount;

    /**
     * 读缓冲区大小
     */
    private Integer readBufferSize;

    /**
     * 数据包长度
     */
    private Integer packageLength;

    // ====\/ for netty

    /**
     * 主线程数量
     */
    private Integer masterSize;

    /**
     * 从线程数量
     */
    private Integer slaveSize;

    // ====\/ for both

    /**
     * 是否启用 TCP No Delay
     */
    private Boolean tcpNoDelay;

    /**
     * 是否启用 TCP Keep Alive
     */
    private Boolean keepAlive;

    /**
     * RSA 超长数据处理单元，默认最长117
     */
    private Integer rsaHandleUnit;

    /**
     * 是否启用配置
     */
    private Boolean enabled = true;

    // ====\/ for execute thread

    /**
     * 执行线程核心池大小
     */
    private Integer threadCorePoolSize;

    /**
     * 执行线程最大池大小
     */
    private Integer threadMaximumPoolSize;

    /**
     * 执行线程保持活跃时间
     */
    private Integer threadKeepAliveTime;
}
